/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package Helpers;

import Hibernate.HibernateUtil;
import Entities.*;
import java.util.List;
import org.hibernate.*;
import org.apache.commons.lang.*;

/**
 *
 * @author Erhan
 */
public class PersonenHelper {

    Session session = null;
    int i = 0;

    /**
     *
     */
    public PersonenHelper() {
        this.session = HibernateUtil.getSessionFactory().getCurrentSession();
    }

    //Ophalen van alles
    /**
     *
     * @return
     */
    public List<Personen> getpersonen() {
        List<Personen> personenList = null;
        try {
            org.hibernate.Transaction tx = session.beginTransaction();
            Query q = session.createQuery("from Personen");
            personenList = (List<Personen>) q.list();
        } catch (Exception e) {
            e.printStackTrace();
        }
        return personenList;
    }

    //Ophalen van 1
    /**
     *
     * @param id
     * @return
     */
    public Personen getPersoon(int id) {
        Personen result = null;
        try {
            org.hibernate.Transaction tx = session.beginTransaction();
            Query q = session.createQuery("from Personen where id=" + id);
            result = (Personen) q.list().get(0);
        } catch (Exception e) {
            e.printStackTrace();
        }

        return result;
    }


    // Wegschrijven
    /**
     *
     * @param persoon
     */
    public void persistPersoon(Personen persoon) {
        org.hibernate.Transaction tx = session.beginTransaction();
        tx.begin();
        session.persist(persoon);
        tx.commit();
    }

    // Verwijderen
    /**
     *
     * @param persoon
     */
    public void deletePersoon(Personen persoon) {
        org.hibernate.Transaction tx = session.beginTransaction();
        tx.begin();
        session.delete(persoon);
        tx.commit();
    }

    // Updaten
    /**
     *
     * @param persoon
     */
    public void updatePersoon(Personen persoon) {
        org.hibernate.Transaction tx = session.beginTransaction();
        tx.begin();
        session.update(persoon);
        tx.commit();
    }


    // Login die simpeler is
    /**
     *
     * @param email
     * @param wachtwoord
     * @return
     */
    public Personen doLogin(String email, String wachtwoord)
    {
        Personen result = null;
        String email2 = StringEscapeUtils.escapeSql(email);
        String wachtwoord2 = StringEscapeUtils.escapeSql(wachtwoord);
        try {
            org.hibernate.Transaction tx = session.beginTransaction();
            Query q = session.createQuery("from Personen " +
                                          "where email = " + email2 +
                                          " and wachtwoord = " +wachtwoord2);
            result = (Personen) q.list().get(0);
        } catch (Exception e) {
            e.printStackTrace();
        }

        return result;
    }

    // Login
    /**
     *
     * @param email
     * @param wachtwoord
     * @return
     */
    public String getLogin(String email, String wachtwoord){
        String email2 = StringEscapeUtils.escapeSql(email);
        String wachtwoord2 = StringEscapeUtils.escapeSql(wachtwoord);
        String email3 = null;
        String wachtwoord3 = null;
        List<Personen> personenLijst = null;
        String verder = null;
        try
        {
            //eerst een volledige lijst van personen binnenhalen
            personenLijst = getpersonen();
            //en nu voor elk persoon het email + wachtwoord ophalen
             while(i < personenLijst.size()) {
                   email3 = personenLijst.get(i).getEmail();
                   wachtwoord3 = personenLijst.get(i).getWachtwoord();
                   //Hier email vergelijken met de ingegeven email
                   if(email3.equals(email2)){
                       //Hier wachtwoord vergelijken met het ingegeven wachtwoord.
                       if(wachtwoord3.equals(wachtwoord2)){
                           verder = personenLijst.get(i).getId().toString();
                       }else{
                           verder = null;
                       }
                   }
                   i++;
             }
        }
	catch(Exception ex)
	{
            System.out.println("Error: " + ex.getMessage());
        }

        return verder;
    }
}